Muito bom @Poccnn, sempre trazendo boas novidades relacionada a área de lua.
Queria eu poder exercer, mas é tenso aprender só :S.
info
Grupo: Infante
Registrado: 06/03/13
Posts: 1.6k
Reputação: +319
Gênero: Masculino
Char no Tibia: Lord Sorte

Muito bom @Poccnn, sempre trazendo boas novidades relacionada a área de lua.
Queria eu poder exercer, mas é tenso aprender só :S.
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Qual sua dificuldade em aprender?
info
Grupo: Infante
Registrado: 06/03/13
Posts: 1.6k
Reputação: +319
Gênero: Masculino
Char no Tibia: Lord Sorte

2 horas atrás, Poccnn disse:Qual sua dificuldade em aprender?
Bom eu fazia codigos antigamente, participei da primeira escolinha de scripting do xtibia a qual o roksas era o professor aprendi tudo até criar funções, hoje sei da logica só que não sei muito sobre.
For, While e Repeat e Strings, Table, Creio que o resto eu saiba como criar funções etcs..
O que é uma corrotina em lua? É tipo um thread?
info
Grupo: Campones
Registrado: 23/04/17
Posts: 17
Reputação: +2
Gênero: Masculino
Char no Tibia: Ever Hellraiser

amigao vc e genial porem sou um pouco leigo na area de programação.. poderia me explicar oque seria coroutine e em que tipo de situação é aplicado?
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Em 08/12/2016 at 21:33, newFag disse:O que é uma corrotina em lua? É tipo um thread?
Não é uma thread. É um processo executado em modo separado.
1 hora atrás, Everson Miranda disse:amigao vc e genial porem sou um pouco leigo na area de programação.. poderia me explicar oque seria coroutine e em que tipo de situação é aplicado?
Coroutine é uma forma de criar um processo que oode parar sua execução a qualquer momento e podendo retornar a execução a pedido do sistema.
É difícil fazer uma implementação dela no mundo do ot server, mas eu fiz essa:
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino
Fala Xtibianos.
Nesse tutorial, gostaria de explicar um pouco sobre coroutine e seu uso.
Irei começar com uma lista de funções da coroutine.
Irei começa falando sobre a principal função da coroutine.
No corpo dessa função, voce precisa declarar pontos para "suspender" a execução da coroutine.
Ao criar a coroutine, ela se encontra no estado "suspended", ou seja, parada/pausada.
para iniciar a coroutine, voce precisa ativar ela usando a função:
Além de ativar/reativar a coroutine, você passa valores para a função da coroutine.
A primeira ativação da coroutine, os argumentos passados não poderão ser modificados, ficam estáticos nos parâmetros da função.
Veja que o resultado da segunda chamada não coincidem com os valores passados. Isso se dá devido aos parâmetros da função impregada na coroutine, não modificar seus valores. uma vez declarados os valores, eles não poderão ser modificados.
uma chamada de coroutine a mais da quantidade de yield's existente na coroutine.
Como demonstrado acima, ao exceder a quantidade de yield's, ela retorna essa mensagem (sem disparar erro no console).
Agora você deva estar se perguntando: Então como fazer para pegar os valores que são passados em cada ativação?
Vou explicar agora:
a função yield pega os valores fornecidos e retorna-os; então você pode pegar esses valores usando variaveis para armazena-los.
Mas, no corpo da função criada para a coroutine, você pode fazer chamadas a funções, pegar valores de variaveis globais, etc; sempre usando a função yield para "suspender" a coroutine.
Agora só falta comentar sobre a função:
Assim como coroutine.create, a função auxiliar coroutine.wrap cria uma nova co-rotina, mas ao invés de retornar uma referência para a co-rotina, retorna uma função que, quando chamada, (re)invoca a co- rotina.
De forma geral, a função coroutine.wrap oferece uma maior conveniência que coroutine.create; ela provê exatamente o que é usualmente necessario: uma função para reativar uma co-rotina. Por outro lado, o uso das funções coroutine.create e coroutine.resume permite o gerenciamento de erros (funções estas que não podem ser usada por wrap).
A função retornada por coroutine.wrap não captura erros; qualquer erro provocado pela execução da co-rotina é propagado a seu chamador.
É isso ai pessoal, espero que tenham gostado. qualquer duvida, sugestão ou critica, deixem nos comentários.